package com.bestcem.xm.label.service.dto;

import com.alibaba.fastjson.JSONObject;
import com.bestcem.xm.label.entity.pojo.LabelValueDO;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;

import java.util.Objects;

/**
 * @author ming.xue <ming.xue@idiaoyan.com>
 * @desc 标签值
 * @date 2021-05-19
 */
@Getter
@Setter
public class LabelValueDTO extends BaseDTO {
    /**
     * 企业标识
     */
    @JsonProperty("orgId")
    private String orgId;

    /**
     * 标签值
     */
    private String value;

    /**
     * 手动打标签标志
     */
    private Boolean manual;

    /**
     * 自动打标签标志
     */
    private Boolean auto;

    /**
     * 显示序号
     */
    private Integer serial;

    /**
     * 标签标识
     */
    @JsonProperty("label_id")
    private String labelId;

    /**
     * 标签名称
     */
    @JsonProperty("label_name")
    private String labelName;

    /**
     * 标签组标识
     */
    @JsonProperty("label_group_id")
    private String labelGroupId;

    /**
     * 标签组名称
     */
    @JsonProperty("label_group_name")
    private String labelGroupName;

    /**
     * 动态条件
     */
    private String condition;

    /**
     * 动态条件
     */
    @JsonIgnore
    private JSONObject conditionObj;

    /**
     * 联系人类型
     */
    private Integer attribute;

    /**
     * LabelValueDO -> LabelValueDTO
     *
     * @param labelValue LabelValueDO
     * @return LabelValueDTO
     */
    public static LabelValueDTO convert(LabelValueDO labelValue) {
        LabelValueDTO labelValueDTO = new LabelValueDTO();
        if (labelValue == null) {
            return labelValueDTO;
        }

        labelValueDTO.setId(labelValue.getLabelValueId());
        labelValueDTO.setOrgId(labelValue.getOrgId());
        labelValueDTO.setValue(labelValue.getValue());

        if (Objects.nonNull(labelValue.getManual())) {
            labelValueDTO.setManual(labelValue.getManual() == 1);
        }
        if (Objects.nonNull(labelValue.getAuto())) {
            labelValueDTO.setAuto(labelValue.getAuto() == 1);
        }

        labelValueDTO.setSerial(labelValue.getSeq());
        labelValueDTO.setLabelId(labelValue.getLabelId());
        labelValueDTO.setLabelName(labelValue.getLabelName());
        labelValueDTO.setLabelGroupId(labelValue.getLabelGroupId());
        labelValueDTO.setLabelGroupName(labelValue.getLabelGroupName());
        labelValueDTO.setCondition(labelValue.getCondition());
        labelValueDTO.setAttribute(labelValue.getMemberType());
        labelValueDTO.setCreateTime(labelValue.getCreateTime());
        labelValueDTO.setUpdateTime(labelValue.getUpdateTime());
        return labelValueDTO;
    }
}
